package com.fei.wechat.web.common.util;

import java.io.IOException;
import java.util.Properties;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.fei.wechat.web.common.model.entity.PropertiesEntity;

/**
 * @author HuangHL
 * @date 2015/12/10
 * @see
 */
public class ConfigProperties
{
    
    /**
     * 日志
     */
    private static Logger logger = LoggerFactory.getLogger(ConfigProperties.class);
    
    private static ApplicationContext propertiesInitApplicationContext;
    
    private static Properties properties;
    
    static
    {
        if (null == propertiesInitApplicationContext)
        {
            propertiesInitApplicationContext = new ClassPathXmlApplicationContext("classpath*:/spring/applicationContext-properties-init.xml");
        }
        PropertiesEntity propertiesEntity = (PropertiesEntity) propertiesInitApplicationContext.getBean("propertiesEntity");
        try
        {
            if (null == properties)
            {
                properties = propertiesEntity.mergeProperties();
            }
        }
        catch (IOException e)
        {
            logger.error("<== 读取properties配置文件，异常", e);
            e.printStackTrace();
        }
    }
    
    /**
     * 描述：获取配置文件字符串值
     * 作者：张进飞
     * 时间：2017年8月16日 下午1:37:30
     * @param key
     * @return
     */
    public static String getStringValue(String key)
    {
        String value = properties.getProperty(key);
        return value;
    }
    
    /**
     * 描述：获取配置文件字符串，整形值
     * 作者：张进飞
     * 时间：2017年8月16日 下午1:37:44
     * @param key
     * @return
     */
    public static Integer getIntegerValue(String key)
    {
        Integer val = null;
        String value = properties.getProperty(key);
        if (null != value && !"".equals(value))
        {
            val = Integer.parseInt(value);
        }
        return val;
    }
    
    /**
     * 描述：获取配置文件，长整形值
     * 作者：张进飞
     * 时间：2017年8月16日 下午1:38:05
     * @param key
     * @return
     */
    public static Long getLongValue(String key)
    {
        Long val = null;
        String value = properties.getProperty(key);
        if (null != value && !"".equals(value))
        {
            val = Long.parseLong(value);
        }
        return val;
    }
}
